Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

175
Visualizações
Usando reactJS, ¿hay alguna manera de crear un número "n" de etiquetas div/html con información diferente sobre ellas?

Estoy creando este sitio y ahora mismo tengo 4 divs que hacen básicamente lo mismo, pero se copian y pegan 4 veces y se modifican 4 bits de información. ¿Hay alguna forma de usar reaccionar que pueda hacer que sea solo un div y una función maneje los diferentes parámetros necesarios para los divs? Aquí hay un ejemplo rápido.

ejemplorápido.jsx

 import React, {useRef} from "react"; function test(props) { animalAmount = useRef(20); return ( <div> <div id='turtle-id'> <h1>I like turtles!</h1> <p>there are {animalAmount.current} turtles in my house!</p> <button>Click me!</button> </div> <div id='dog-id'> <h1>I like dogs!</h1> <p>there are {animalAmount.current} dogs in my house!</p> <button>Click me!</button> </div> <div id='fish-id'> <h1>I like fish!</h1> <p>there are {animalAmount.current} fish in my house!</p> <button>Click me!</button> </div> <div id='hippo-id'> <h1>I like hippos!</h1> <p>there are {animalAmount.current} hippos in my house!</p> <button>Click me!</button> </div> </div> ); } export default test;

por razones específicas, no puedo simplemente crear un componente principal y llamarlo allí y duplicarlo cuatro veces, debe hacerse en este componente si es posible.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Cree una matriz con sus datos y luego use el map para imprimir los divs:

 const data = [ { id: 'turtle-id', title: 'I like turtles', text: '...', // rest of needed data }, { // ... } ]; return ( data.map(item => { return ( <div key={item.id} id={item.id}> <h1>{item.title}</h1> <p>{item.text}</p> <button>Click me!</button> </div> ); }); );
about 4 years ago · Juan Pablo Isaza Relatório

0

Puede crear una matriz de objetos fuera del componente y recorrerlos. Algo como esto.

 const animals = [{ id: "turtle-id", title: "I like turtles!", defineText: (value) => `there are ${value} turtles in my house!` }, ....]

y luego en la devolución de su componente, puede hacer algo como esto.

 ... return ( <div> {animals.map((animal) => { return ( <div key={animal.id} id={animal.id}> <h1>{animal.title}</h1> <p>{animal.defineText(animalAmount.current)}</p> <button>Click me!</button> </div> ); })} </div> ); ...
about 4 years ago · Juan Pablo Isaza Relatório

0

  1. Tenga un conjunto de datos que describan a los animales y establezca su estado con ellos.

  2. Cambie sus contenedores de animales a un nuevo componente ( Animal ).

  3. map sobre el estado de los animales para crear una serie de animales.

  4. Cuando se hace clic en un botón, actualice el valor de conteo de ese animal.

 const { useState } = React; // Pass in some data function Animals({ data }) { // Initialise state with the data const [ animals, setAnimals ] = useState(data); // Copy the state, find the name of the // animal we're updating the count for from // the container's dataset, find the index of the // animal object in state, update its count value // and the update the state function handleCount(e) { const copy = [...animals]; const { name } = e.target.closest('.animal').dataset; const index = copy.findIndex(obj => obj.name === name); ++copy[index].count; setAnimals(copy); } // `map` over the animals state // an return an array of Animal components return animals.map(animal => { return ( <Animal animal={animal} handleCount={handleCount} /> ); }); } // Animal component function Animal({ animal, handleCount }) { return ( <div className="animal" data-name={animal.name}> <h1>I like {animal.plural}!</h1> <p>There are {animal.count} {animal.plural} in my house!</p> <button onClick={handleCount}>Click me!</button> </div> ); } const data = [ { name: 'turtle', plural: 'turtles', count: 0 }, { name: 'dog', plural: 'dogs', count: 0 }, { name: 'fish', plural: 'fish', count: 0 }, { name: 'hippo', plural: 'hippos', count: 0 } ]; ReactDOM.render( <Animals data={data} />, document.getElementById('react') );
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js"></script> <div id="react"></div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda